#ifndef TABLEROEDITOR_H_
#define TABLEROEDITOR_H_
#include <gtkmm.h>
#include <iostream>
#include <string>
#include <stdio.h>
#include "CeldaEditor.h"
#include "json/json.h"
#include <cstring>
#include <iostream>
#include <fstream>
#include <vector>

class TableroEditor {
	int dimX;
	int dimY;
	std::string dirImagenFondo;
	std::string dirSonido;
	int puntaje;
	int nivel;
	
	Glib::RefPtr<Gtk::Builder> builder;
	Gtk::ComboBox *combotipo;
	Gtk::ComboBox *combocolor;
	Gtk::Fixed* window;
	Gtk::Image imagen;
	Gtk::SpinButton *spinprob;
	std::vector<CeldaEditor*> vecCeldas;
	CeldaEditor* celdaSelected;
public:

	TableroEditor();
	explicit TableroEditor(const Glib::RefPtr<Gtk::Builder>& refGlade);
	int getX();
	int getY();
	
	int getPuntaje();
	void setPuntaje(int valor);
	void setNivel(int valor);
	void setVacias();
	CeldaEditor* getCeldaSelected();

	int getProbSeleccionada(int idTipo, int idColor);
	void setProbSeleccionada();
	void setDimensiones(int in_dimX, int in_dimY);
	void generarTablero(int in_dimX, int in_dimY);
	void setFondo(std::string dirImagen);
	void setDirFondo(std::string dirImagen);
	void setDirSonido(std::string dir);
	bool activoSeleccion();
	void cargarDatosAtablero(Json::Value nivel);
	void setCeldaSelected(CeldaEditor* celdaSelected);
	void refrescarTablero();
	void mostrarProbCelda();
	Json::Value toJson();
};

#endif
